// pages/mine/mine.js
const _api = require('../../utils/api.js');
const apiurl = require('../../utils/apiurl/public.js');
Page({

    /**
     * 页面的初始数据
     */
    data: {
        showModal:false,
        userModal:false,
        userInfo:null,
        product:[],//充值项目
        getuser:null,//从接口获取的用户信息
        order:null,
        apisum:0,
        ios:false,
        code:'',
        anonymous_code:''
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
    
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        let userInfo=tt.getStorageSync('userInfo')
        let _this=this;
       let system= tt.getSystemInfoSync().system.toLowerCase().includes("ios");
  
       tt.login({
        success:res=>{
          console.log(res)
          var res=res.code
          _this.setData({
            code:res.code,
            anonymous_code:res.anonymousCode
        })
        }
      })
        this.setData({
            userInfo:userInfo,
            ios:system
        })
       
        this.getUserinfo()
        this.getProduct()
      
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },
    getCode(){
      if(this.data.code){
        tt.getUserProfile({
          success:ures=>{
            let objdata={'js_code':this.data.code,'anonymous_code':this.data.anonymous_code,'code':this.data.code,'encryptedData':ures.encryptedData,'iv':ures.iv,'type':'tt'};
            _api.post(apiurl.login,objdata).then(loginres=>{
              
                tt.setStorageSync('token', loginres.data.data.token)
                this.getUserinfo()
              })
              
          },fail:err=>{
            console.log(err)

          }
        })
    }
        tt.getUserProfile({
            desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
            success: (userres) => {
                console.log('userres.userInfo',userres.userInfo)
                tt.setStorageSync('wxuserInfo',JSON.stringify(userres.userInfo))
                let wxuserInfo=userres.userInfo

                let sex=wxuserInfo.gender==0?'男':'女'

                _api.post("index/user/info_edit",{nickname:wxuserInfo.nickName,avatar:wxuserInfo.avatarUrl,sex:sex}).then(infores=>{

                    if(!infores.code){
                      console.log('infores',infores.data)
                      this.setData({
                        'getuser.avatar':infores.data.data.avatar,
                        'getuser.nickname':infores.data.data.nickname
                    })
                    }
                  
                })
                     
                     
                
            }
          })
   
      
    },
    openTopup(){//打开充值框
        this.setData({showModal:true})
      if(!this.data.getuser){
        this.getCode()
      }
    },
    async userTopup(){//打开充值框
      this.setData({userModal:true})
      let res = await _api.ttlogin();
      this.setData({
        code:res.code,
        anonymous_code:res.anonymousCode
    })
    
  },
    viptopip(){//打开充值框
      if(!this.data.getuser){
        this.getCode()
      }
        let id={
          'currentTarget':{
            'dataset':{
              'id':60
            }
          }
        }
        this.checkPay(id)
  },
    hideModal(){//关闭充值框
        this.setData({showModal:false,userModal:false})
    },
    userxhModal(e){
      tt.showLoading({
        title: '切换账户中...',
      })
    
    
    tt.setStorageSync('channelid',e.currentTarget.dataset.channel_id)
    tt.setStorageSync('token','')
   
        let code=this.data.code
        let anonymous_code=this.data.anonymous_code
        if(code){
            tt.getUserProfile({
              success:ures=>{
                _api.post(apiurl.login,{js_code:code,code:code,anonymous_code:anonymous_code,encryptedData:ures.encryptedData,iv:ures.iv}).then(loginres=>{
                  
                  if(loginres.data){
                    tt.setStorageSync('token', loginres.data.data.token)
                  }
                   this.getUserinfo()
                  }) 
              },fail:err=>{
                console.log('err',err)
              }
            })
        }
   
    this.hideModal()
    },
    gotoSign(){
        tt.navigateTo({
          url: '/pages/signin/signin',
        })
    },
    gotoPage(e){

        var value = tt.getStorageSync('token')
        if(value){
            tt.navigateTo({
              url: e.currentTarget.dataset.page,
            })
        }else{
          if(!this.data.getuser){
            this.getCode()
          }
        }
    },
    getProduct(){//获取充值项目
        _api.get(apiurl.rechargeitem).then(res=>{
            if(res.data.code==0){
                this.setData({
                    product:res.data.data
                })
            }
        })
    },
    getUserinfo(){//获取用户信息
        _api.get(apiurl.userinfo).then(res=>{
          tt.hideLoading()
            if(res.data.code==0){

              console.log('res.data.data',res.data.data)
                this.setData({
                    getuser:res.data.data
                })
                tt.setStorageSync('getuser', res.data.data)
               
            }
        })
    },
    checkPay(e){//选择充值的项
        let id=e.currentTarget.dataset.id
        let _this=this
        if(!this.data.getuser){
          this.getCode()
        }
      
        _api.post(apiurl.ordercreate,{id:id,clickid:_this.data.clickid}).then(res=>{
          if(res.data.code==0){
            let data=res.data.data;
            tt.requestOrder({
              data:data.data, // 请勿在前端对data做任何处理
              byteAuthorization:data.byteAuthorization, // 请勿在前端对byteAuthorization做任何处理
              success: (res) => {
                console.log('成功', res.orderId);
                tt.getOrderPayment({
                  orderId:res.orderId, // 请勿在前端对data做任何处理
                  success: (res) => {
                    console.log('拉起支付', res);
                    _this.hideModal()
                     _this.getUserinfo()
                  },
                  fail: (res) => {
                
                  },
                  complete:(e)=>{
    
                   
                  }
                });
              },
              fail: (res) => {
                console.log(res)
              }
            });
          
            // tt.pay({
            //   orderInfo: {
            //     order_id:data.data.order_id,
            //     order_token:data.data.order_token,
            //   },
            //   service: 5,
            //   _debug:1,
            //   success(res) {
            //     if (res.code == 0) {
            //       // 支付成功处理逻辑，只有res.code=0时，才表示支付成功
            //       // 但是最终状态要以商户后端结果为准
            //       console.log(res);
            //       console.log("成功");
            //       _this.setData({
            //           showPay:false
            //       })
            //       _this.hideModal()
            //       _this.getProduct()
                
              
            //       _this.getUserinfo()
            //     }
            //   },
            //   fail(res) {
            //     // 调起收银台失败处理逻辑
            //   },
            // });
           
          }else if(res.data.code==103 || res.data.code==101){
            _this.logincode()
            setTimeout(()=>{
              _this.getCode()
            },1000)
            tt.setStorageSync('getuser','')
          }
      })
    },
    compareVersion(_v1, _v2) {
      if (typeof _v1 !== 'string' || typeof _v2 !== 'string') return 0
    
      const v1 = _v1.split('.')
      const v2 = _v2.split('.')
      const len = Math.max(v1.length, v2.length)
    
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
    
      for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i], 10)
        const num2 = parseInt(v2[i], 10)
    
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
    
      return 0
    }
})